package com.nbcio.im.core.service;

import com.nbcio.system.domain.vo.SysUserVo;

import java.time.LocalDateTime;
import java.util.List;

/**
 * IM用户服务接口
 * 直接使用系统用户，只管理IM相关字段
 *
 * @author nbacheng
 */
public interface ImUserService {
    
    /**
     * 获取系统用户信息
     *
     * @param userId 用户ID
     * @return 系统用户信息
     */
    SysUserVo getSysUser(Long userId);
    
    /**
     * 更新用户IM在线状态
     *
     * @param userId 用户ID
     * @param status 状态
     */
    void updateUserStatus(Long userId, String status);
    
    /**
     * 获取在线用户列表
     *
     * @return 在线用户列表
     */
    List<SysUserVo> getOnlineUsers();
    
    /**
     * 搜索用户
     *
     * @param keyword 关键词
     * @return 用户列表
     */
    List<SysUserVo> searchUsers(String keyword);
    
    /**
     * 更新用户最后在线时间
     *
     * @param userId 用户ID
     */
    void updateLastOnlineTime(Long userId);
    
    /**
     * 更新用户IM信息
     *
     * @param userId 用户ID
     * @param imSignature IM个性签名
     * @param imGender IM性别
     * @param imBirthday IM生日
     * @param imRegion IM地区
     */
    void updateImUserInfo(Long userId, String imSignature, String imGender, LocalDateTime imBirthday, String imRegion);
    
    /**
     * 获取用户IM状态
     *
     * @param userId 用户ID
     * @return IM状态
     */
    String getUserImStatus(Long userId);
}
